/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"231ACADD-926A-4316-9DB8-ABCFCBBE05CF",variableType:4}
 */
var f_cuentas_cyb_id = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"C615042F-DE98-4551-8D1A-962FA0480068",variableType:4}
 */
var f_banco_id = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"98C10995-E414-477E-B142-CDEDCEF11E4E",variableType:4}
 */
var f_valor_id = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"B1E30F00-8E1A-4626-9314-E637ADECD772",variableType:4}
 */
var es_preview = 0;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"C9C82D0D-3A89-4E32-B544-259818555AAB",variableType:4}
 */
var f_cheque_nro = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"FDD39703-07E0-4C8C-A6B7-7CBF0607500A",variableType:4}
 */
var f_estado_cheq = null;

/**
 * @type {Date}
 *
 * @properties={typeid:35,uuid:"4FFB9EAA-759A-4EC6-B607-45A0608906E3",variableType:93}
 */
var f_fecha_entrega = null;

/**
 * @type {JSFoundSet<db:/infocom/cheques>}
 * @properties={typeid:35,uuid:"5AD04E51-59C8-4F56-ABAA-514B50CDB992",variableType:-4}
 */
var fs_cheques = databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'cheques');

/**
 *
 * @properties={typeid:24,uuid:"90C2118E-F968-4EAE-B086-3A8402143732"}
 */
function cancelar() 
{
	databaseManager.revertEditedRecords()
	Iniciar();
}

/**
 *
 * @properties={typeid:24,uuid:"BBBB5823-F8B3-4487-96E2-0443D1B62C28"}
 * @AllowToRunInFind
 */
function confirmar() 
{  //  este form esta basado en ing_varios  19/03/2012
	totalizar();
	if (concepto == null) 
	{
		globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar Concepto",'OK')
		return;
	}
	if (globals.zparam_usa_proyecto == 1 && proyecto_id == null) 
	{
		globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar proyecto",'OK')
		return;
	}
	if (concepto.length < 10) 
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar concepto con 10 caracteres por lo menos','OK')
		return ;
	}
 
	 // no pueden ser todos cero
	if (globals.gtotal_valores == 0 && globals.gtotal_varios == 0) 
	{
		globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar Valores o Imputacion Contable",'OK')
		return;
	}
 	 
	// controlar 
	if (Math.abs(globals.gtotal_valores - globals.gtotal_varios) > 0.005)
	{
		globals.DIALOGS.showWarningDialog('Aviso',"No coincide la suma los importes ingresados en valores e imputación contable",'OK')
		return;
	}
	
	var estado_val = validar_al_confirmar();
	if (estado_val==false)
	 	return;
		 
	//// NUMERACION numeracion de  pagos varios   codigo=51  
	var fs_nro_op = databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'numeracion_pr')
	fs_nro_op.loadAllRecords()
	fs_nro_op.find()
	fs_nro_op.sucursal 	= sucursal
	fs_nro_op.letra		= letra
	fs_nro_op.cod_comprobante = globals.zconf_numeracion_opago_varios_negat   //fijo 51=pagos varios 52=ingresos varios
	var found = fs_nro_op.search()
	if (found != 1)
     {
	   globals.DIALOGS.showWarningDialog('Aviso','Sucursal o Tipo de comprobante incorrectos al buscar numeracion de pagos varios','OK')
	   return ; 
     }
     	
 	fs_nro_op.setSelectedIndex(1)
  	var nro_aux = fs_nro_op.ultimo_numero + 1  
  	codigo_movimiento = globals.zparam_codigo_opago_varios_negat
	globals.duplicacion_op_cabecera(letra,sucursal,nro_aux,codigo_movimiento)
	if (globals.gfilas != 0)  // si es cero, la factura no existe
	{ // ya existe , lo rechaza
		globals.DIALOGS.showWarningDialog('Aviso','Ya existe ese Pago Varios ' + letra + '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(nro_aux,'00000000'),'OK')
		return ;
	}	
	else
	{  // no existe ese pago varios, asigna el sig. numero
  		fs_nro_op.ultimo_numero = fs_nro_op.ultimo_numero + 1
	}	
  
// OTROS datos OP_CABECERA
    nro_comprobante = fs_nro_op.ultimo_numero
    importe			= globals.gtotal_valores 
    importe_en_letras = globals.nro_a_letra(importe);
	
	//// REGRABAR CHEQUES  estado rechazado	
	fs_cheques.estado = globals.zconf_chq_rechazado_varios; // 9
       	
//// GRABAR TODO
	var estado = databaseManager.saveData()
	if (estado == true)
	{    
		var $msj = 'Orden Pagos Varios - Cheque Rechazado ' + letra + '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(nro_comprobante,'00000000') +  ' Generado correctamente' + ' Imprime:'
		var resp = globals.DIALOGS.showQuestionDialog('',  $msj,  "Si", "No" )
		if (resp == 'Si')
		{
			es_preview = 1; 
			forms.opago_varios_imp.controller.showPrintPreview(true); 	
		}
		else
		{
			Iniciar() // no hacer Iniciar cuando se va al preview
		}
	}
	else
	{
		globals.DIALOGS.showInfoDialog('Pagos varios',  'Orden Pagos Varios - Cheque Rechazado No fue generado ',  "OK")
		cancelar()
	}
}

/**
 *
 * @properties={typeid:24,uuid:"D81260F8-1671-46FC-80E0-C7B63B87D222"}
 */
function salir_rec() 
{
	if (es_preview == 0)
	{
	 	var resp = globals.DIALOGS.showQuestionDialog( 'Confirma',  '¿Seguro que desea salir?' ,  'Si', 'No')
		if (resp == 'Si')
		{
			databaseManager.revertEditedRecords()
			databaseManager.setAutoSave(false); 
		}
	}
}

/**
 *
 * @properties={typeid:24,uuid:"E3D111A5-2B06-4B77-B2C7-055C154BFBFD"}
 */
function totalizar() 
{
	totales_varios();
}

/**
 *
 * @properties={typeid:24,uuid:"B19383C0-7FAF-486B-A272-81B878B04188"}
 */
function Iniciar() 
{
	databaseManager.setAutoSave(false)
	controller.newRecord(false);
	fecha = application.getServerTimeStamp();  
	letra = "X";  
	globals.gtotal_varios	= 0.00;
	globals.gtotal_valores	= 0.00;
	globals.gtotal_saldo	= 0.00;
	elements.tabs_420.enabled = true;
	es_preview = 0;	
	f_cheque_nro	= null;
	f_estado_cheq	= null;
	f_fecha_entrega	= null;
	f_valor_id		= null;
	f_banco_id		= null;
	concepto		= null;
	}

/**
 *
 * @properties={typeid:24,uuid:"08C5F1FC-C8F2-4CE8-B4DC-1F3317C3E1CE"}
 */
function totales_valores() 
{
	globals.gtotal_valores = 0
	for ( var i = 1 ; i <= op_cabecera_to_op_detalle.getSize(); i++ )
	{
		op_cabecera_to_op_detalle.setSelectedIndex(i) 
		globals.gtotal_valores += op_cabecera_to_op_detalle.importe
	} 
}

/**
 *
 * @properties={typeid:24,uuid:"3A49E64A-491A-44B0-9C58-15883E10C37F"}
 */
function agregar_renglon_varios() 
{// ALTA de renglon en op_detalle_varios 
	op_cabecera_to_op_detalle_varios.newRecord(false);
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"10F5BCE3-2510-42FD-A43D-042F54B65480"}
 */
function eliminar_renglon_varios(event) 
{
	var found = op_cabecera_to_op_detalle_varios.getSize()
	if (found==0)
	{
	   	globals.gtotal_varios=0.00 
	}
	else
	{
	var resp = globals.DIALOGS.showQuestionDialog( 'Confirma',  '¿Seguro que desea dar de baja? ',  'Si', 'No')
	if (resp == 'Si')
	{
		op_cabecera_to_op_detalle_varios.deleteRecord()
		totales_varios() 
	}
	}
}

/**
 *
 * @properties={typeid:24,uuid:"65457E7C-317E-4C5B-850F-67A1105B4B4D"}
 */
function totales_varios() 
{
	globals.gtotal_varios = 0;
	for ( var i = 1 ; i <= op_cabecera_to_op_detalle_varios.getSize(); i++ )
	{
		op_cabecera_to_op_detalle_varios.setSelectedIndex(i);
		globals.gtotal_varios += op_cabecera_to_op_detalle_varios.importe
	}
}

/**
 * @properties={typeid:24,uuid:"D506130C-2D8D-4F4F-A3E4-AE729F137460"}
 */
function validar_al_confirmar() 
{
	var cuantos = op_cabecera_to_op_detalle.getSize()  // lo hace afuera para q sea solo una vez
	//// VALIDAR VALORES	
	for (var i = 1 ; i <= cuantos; i++)
	{
		op_cabecera_to_op_detalle.setSelectedIndex(i);
		if (op_cabecera_to_op_detalle.importe == null)
	    {
	    	globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar Importe ",'OK')
	    	return false;
	    }
		if (op_cabecera_to_op_detalle.valor_id == null)
	    {
	    	globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar el Valor ",'OK')
	    	return false;
	    }
		
		if(op_cabecera_to_op_detalle.op_detalle_to_valores.es_cheque == 1)
		{
			if (op_cabecera_to_op_detalle.cheque_nro == null)
			{
		  		globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar Nro. de cheque",'OK')
				return false;
	   	 	}
			if (op_cabecera_to_op_detalle.fecha_pago == null)
			{
		 		globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar Fecha de pago de cheque nro. " + op_cabecera_to_op_detalle.cheque_nro,'OK')
	 			return false;
			}
		}
	 }
	//// VALIDAR IMPUTACION contable
	cuantos = op_cabecera_to_op_detalle_varios.getSize()
	for (i = 1 ; i <= cuantos; i++) 
	{
		op_cabecera_to_op_detalle_varios.setSelectedIndex(i)
		if (op_cabecera_to_op_detalle_varios.importe == null) 
		{
			globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar importe','OK')
			return false;
		}
		if (op_cabecera_to_op_detalle_varios.concepto_varios == null) 
		{
			globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar concepto','OK')
			return false;
		}
		if (op_cabecera_to_op_detalle_varios.plan_id == null) 
		{
			globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar cuenta de imputación contable','OK')
			return false;
		}
	}	
	return true; 
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"362D2D3D-7066-4F50-8894-19EEE67B330E"}
 * @AllowToRunInFind
 */
function buscar_cheque(event) 
{
	if (f_cheque_nro == null || f_cheque_nro == 0)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe informar número de cheque','OK')
		return;
	}
	var estado_find = fs_cheques.find();
	if (estado_find == false)
	{
		globals.DIALOGS.showWarningDialog('Aviso','No pudo buscar en cheques','OK')
		return;
	}
	op_cabecera_to_op_detalle.deleteAllRecords(); // se borra porque si no genera en c/consulta un registro de detalle
	fs_cheques.cheque_nro 		= f_cheque_nro;
	fs_cheques.op_detalle_id 	= '!=null';
	fs_cheques.valor_id			= f_valor_id;
	if (f_valor_id == 4 || f_valor_id == 5)   //  TODO 29/03/2012 parametrizar 
		fs_cheques.cuentas_cyb_id = f_cuentas_cyb_id   // es propio
	else // es terceros
		fs_cheques.banco_id = f_banco_id;

	var found = fs_cheques.search();
	if (found == 0) 
	{
		globals.DIALOGS.showWarningDialog('Aviso','No existe cheque con esas características','OK')
		return;
	}
	if (found != 1)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Hay más de un cheque con esas características','OK')
		return;
	}
// ESTADO del cheque
	if(fs_cheques.estado != globals.zconf_chq_rechazado && fs_cheques.estado != globals.zconf_chq_rechazado_propio)
	{  // 4 y 2 respect.: solo debe tomar cheques con alguno de esos estados
		var estado_texto = globals.TabDetalles_Texto('estado_cheque',fs_cheques.estado)  //  03/04/2012
		if (estado_texto != false)
			return;
		if (estado_texto != null)		
		{
			globals.DIALOGS.showWarningDialog('Aviso','El cheque solicitado tiene estado  ' + fs_cheques.estado,'OK')
		}
		else
		{
	 		globals.DIALOGS.showWarningDialog('Aviso','Falta cargar descripcion del estado ' + fs_cheques.estado +' en Tablas_detalle','OK')
		}
		return;
	}

	if (f_valor_id == 4 || f_valor_id == 5)   //  TODO 29/03/2012 parametrizar 
	{// es propio -> debe buscar en OP
		if(fs_cheques.cheques_to_op_detalle.op_detalle_to_op_cabecera.codigo_movimiento!= globals.zparam_codigo_opago_varios) // 6
		{
			globals.DIALOGS.showWarningDialog('Aviso','El cheque no corresponde a una Orden Pago Varios','OK')
			return;
		}
	}
	else
	{// es terceros -> debe buscar en RECIBO
		if(fs_cheques.cheques_to_rec_detalle.rec_detalle_to_rec_cabecera.codigo_movimiento!=
		globals.zconf_rec_cod_mov_ing_varios &&
		fs_cheques.cheques_to_rec_detalle.rec_detalle_to_rec_cabecera.codigo_movimiento!=
		globals.zconf_rec_cod_mov_recibo) // 2 y 1 respect.
		{
			globals.DIALOGS.showWarningDialog('Aviso','El cheque no corresponde a un Ingreso Varios','OK')
			return;
		}
	}

// genera OP_DETALLE del cheque rechazado
	op_cabecera_to_op_detalle.newRecord();
	op_cabecera_to_op_detalle.banco_id			= fs_cheques.banco_id;
	op_cabecera_to_op_detalle.banco_sucursal	= fs_cheques.banco_sucursal
	op_cabecera_to_op_detalle.cheque_nro		= fs_cheques.cheque_nro
	op_cabecera_to_op_detalle.cuentas_cyb_id	= fs_cheques.cuentas_cyb_id
	op_cabecera_to_op_detalle.fecha_emision_chq	= fs_cheques.fecha_emision
	op_cabecera_to_op_detalle.fecha_pago		= fs_cheques.fecha_pago
	op_cabecera_to_op_detalle.importe			= fs_cheques.importe
	op_cabecera_to_op_detalle.lugar_emision		= fs_cheques.lugar_emision
	op_cabecera_to_op_detalle.moneda_id			= fs_cheques.moneda_id
	op_cabecera_to_op_detalle.titular			= fs_cheques.titular
	op_cabecera_to_op_detalle.titular_cuit		= fs_cheques.titular_cuit
	op_cabecera_to_op_detalle.titular_direccion	= fs_cheques.titular_direccion
	op_cabecera_to_op_detalle.valor_id			= fs_cheques.valor_id;
	globals.gtotal_valores						= fs_cheques.importe;
	globals.gEstado_cheq						= fs_cheques.estado;
	globals.gFechaEntrega_cheq					= fs_cheques.fecha_entrega;

}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"1CC31E14-80E7-4E68-88EE-1B7A81EEBF08"}
 */
function onDataChange_valor_id(oldValue, newValue, event) 
{
	if (f_valor_id == null)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar tipo de valor','OK')
		return false;
	}
	if (f_valor_id == 4 || f_valor_id == 5)   //  TODO 09/03/2012 parametrizar cheques propios  
	{	// es propio-> hablita cuenta
		elements.f_cuentas_cyb_id.enabled 	= true;
		elements.f_banco_id.enabled			= false;
		elements.f_cuentas_cyb_id.requestFocus(false);
	}
	else
	{	// no es propio-> hablita banco
		elements.f_cuentas_cyb_id.enabled	= false;
		elements.f_banco_id.enabled			= true;
		elements.f_banco_id.requestFocus(true);
	}   
	return true;
}
